package spring.cloud.study.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import spring.cloud.study.entity.base.ResponseModel;
import spring.cloud.study.service.PayService;

@RestController
public class PayController {

	@Autowired
	private PayService payService;
	
	@Value("${server.port}")
	private String serverPort;
	
///////////////////////////////////////////////////服务降级/////////////////////////////////////////////////////////////
	@GetMapping("/pay/payment/{goodId}/{amount}")
	public ResponseModel pay(@PathVariable String goodId, @PathVariable int amount) {
		System.out.println(Thread.currentThread().getName() + "订单编号：" + goodId + " 购买数量：" + amount);
		return payService.payment(goodId, amount);
	}
	
	/**
	 * 
	 * @Title: payTimeOut   
	 * @Description: 1.使用JMeter进行高并发压力测试，当外部服务访问该服务接口时，访问速度出现的等待的状态。
	 * @date: 2021年12月10日 上午10:20:37   
	 * @version:
	 * @param goodId
	 * @param amount
	 * @return          
	 * @throws
	 */
	@GetMapping("/pay/payment/timeout/{goodId}/{amount}")
	public ResponseModel payTimeOut(@PathVariable String goodId, @PathVariable int amount) {
		return payService.paymentTimeOut(goodId, amount);
	}
	
	///////////////////////////////////////////////////服务熔断/////////////////////////////////////////////////////////////
	@GetMapping("/pay/payment/circuit/{id}")
	public ResponseModel paymentCircuitBreaker(@PathVariable int id) {
		return payService.payCircuitBreaker(id);
	}
}
